home *** CD-ROM | disk | FTP | other *** search
/ Komputer for Alle 2003 #3 / K-CD-3-2003.ISO / WinXP Service Pack 1 / xpsp1_sv_x86.exe / ipp_util.in_ / ipp_util.inc
Encoding:
Text File  |  2002-08-01  |  13.7 KB  |  415 lines

  1. <%
  2. '------------------------------------------------------------
  3. '
  4. ' Microsoft Internet Printing Project
  5. '
  6. ' Copyright (c) Microsoft Corporation. All rights reserved.
  7. '
  8. '------------------------------------------------------------
  9. %>
  10.  
  11. <%
  12.  
  13. Const L_DocumentList_Text   = "Dokumentlista"
  14. Const L_DerivedFont_Text    = " face=""Tahoma, Verdana, Arial, MS Sans Serif"" "
  15. Const L_DoubleDevFont_Text  = " face=""""Tahoma, Verdana, Arial, MS Sans Serif"""" "
  16.  
  17. Const PROGID_CLIENT_HELPER  = "OlePrn.PrinterURL"
  18. Const PROGID_SNMP           = "OlePrn.OleSNMP"
  19. Const PROGID_HELPER         = "OlePrn.AspHelp"
  20. Const PROGID_CONVERTER      = "OlePrn.OleCvt"
  21. Const PROGID_ADDPRINTER     = "OlePrn.AddPrint"
  22. Const VIEW_EQUALS           = "&view="
  23. Const ONCLICK_EQUALS        = " onclick="
  24. Const QUOTE                 = """"
  25. Const QUEUE_VIEW            = "ipp_0007.asp"
  26. Const PROPERTY_VIEW         = "ipp_0006.asp"
  27. Const UNAUTHORIZED_401      = "401 Unauthorized"
  28. Const FAXDRIVER             = "Microsoft Shared Fax Driver"
  29.  
  30. Const COMPUTER              = "MS_Computer"
  31. Const LOCAL_SERVER          = "MS_LocalServer"
  32. Const DHTML_ENABLED         = "MS_DHTMLEnabled"
  33. Const DEFAULT_PAGE          = "MS_DefaultPage"
  34. Const PRINTER               = "MS_Printer"
  35. Const URLPRINTER            = "MS_URLPrinter"
  36. Const SNMP                  = "MS_SNMP"
  37. Const IPADDRESS             = "MS_IPAddress"
  38. Const COMMUNITY             = "MS_Community"
  39. Const DEVICE                = "MS_Device"
  40. Const PORTNAME              = "MS_Portname"
  41. Const MODEL                 = "MS_Model"
  42. Const ASP1                  = "MS_ASP1"
  43. Const CONNECT               = "showconnect"
  44. Const ATPRINTER             = "&MS_Printer="
  45. Const ATURLPRINTER          = "&MS_URLPrinter="
  46. Const ATSNMP                = "&MS_SNMP="
  47. Const ATIPADDRESS           = "&MS_IPAddress="
  48. Const ATCOMMUNITY           = "&MS_Community="
  49. Const ATDEVICE              = "&MS_Device="
  50. Const ATPORTNAME            = "&MS_Portname="
  51. Const ATMODEL               = "&MS_Model="
  52. Const ATASP1                = "&MS_ASP1="
  53. Const ATPAGE                = "&page="
  54. Const ATCONNECT             = "&showconnect="
  55.  
  56. Dim   DEF_FONT, DEF_BASEFONT_TAG, DEF_FONT_TAG, LARGE_FONT_TAG, MENU_FONT_TAG
  57. Dim   SUBMENU_FONT, SUBMENU_FONT_TAG, CLIENT_FONT, DEF_DOUBLEFONT, DEF_DOUBLEFONT_TAG
  58.  
  59. DEF_FONT                    = L_DerivedFont_Text
  60. DEF_DOUBLEFONT              = L_DoubleDevFont_Text
  61. DEF_BASEFONT_TAG            = "<basefont  " & L_DerivedFont_Text & " size=2>"
  62. DEF_FONT_TAG                = "<font " & L_DerivedFont_Text & " size=2>"
  63. LARGE_FONT_TAG              = "<font " & L_DerivedFont_Text & " size=4>"
  64. MENU_FONT_TAG               = "<font " & L_DerivedFont_Text & " size=2 color=white>"
  65. SUBMENU_FONT                = L_DerivedFont_Text & " size=1 "
  66. SUBMENU_FONT_TAG            = "<font " & L_DerivedFont_Text & " size=2>"
  67. CLIENT_FONT                 = "<font " & L_DerivedFont_Text & ">"
  68. Const END_FONT              = "</font>"
  69.  
  70. 'Initialize UTF8 related information
  71. Dim bUTF8
  72. Dim OleCvt
  73.  
  74. Function bUTF8Capable
  75.     Dim objBrowcap
  76.  
  77.     Set objBrowcap = server.CreateObject("MSWC.browsertype")
  78.     If (objBrowcap.browser = "IE" Or objBrowcap.browser = "Netscape")  And objBrowcap.majorver >= "4" Then
  79.         bUTF8Capable = True
  80.     Else
  81.         bUTF8Capable = False
  82.     End If
  83. End Function
  84.  
  85.  
  86. Sub InitCodepage ()
  87.     Set OleCvt = Server.CreateObject (PROGID_CONVERTER)
  88.  
  89.     bUTF8 = bUTF8Capable
  90.     If bUTF8 Then
  91.         Session.Codepage = 65001
  92.     End If
  93.  
  94. End Sub
  95.  
  96. InitCodePage
  97.  
  98. Function SetCodePage ()
  99.     If (bUTF8) Then 'If not UTF enabled, use the default charset
  100.         SetCodePage = "<Meta Http-equiv=""Content-Type"" Content=""text/html; CHARSET=UTF-8"">"
  101.     Else
  102.         SetCodePage = ""
  103.     End If
  104. End Function
  105.  
  106. Function Write (strUnicode)
  107.     Write = strUnicode
  108. End Function
  109.  
  110. Function SubstituteString(strIn, strPattern, strReplacement)
  111.     Dim iStrPos
  112.  
  113.     iStrPos = InStr(strIn,strPattern)
  114.     SubstituteString = Left(strIn, iStrPos-1) & strReplacement & Mid(strIn, iStrPos + Len(strPattern))
  115. End Function
  116.  
  117. Function RepString1( strIn, strRep )
  118.     RepString1 = SubStituteString( strIn, "%1", strRep)
  119. End Function
  120.  
  121. Function RepString2( strIn, strRep1, strRep2 )
  122.     RepString2 = SubStituteString( RepString1(strIn, strRep1) , "%2", strRep2)
  123. End Function
  124.  
  125. Function RepString3( strIn, strRep1, strRep2, strRep3 )
  126.     RepString3 = SubStituteString( RepString2(strIn, strRep1, StrRep2), "%3", strRep3)
  127. End Function
  128.  
  129. Function GenErrorPage (iCode, strSource, strDscp, strNote)
  130.     Dim strHTML
  131.     Const L_ErrCode_Text      = "<b>Felkod:</b>"
  132.     Const L_ErrDscp_Text      = "<b>Beskrivning:</b>"
  133.     Const L_ErrNote_Text      = "<b>Obs!</b>"
  134.     Const L_ErrTitle_Text     = "Internet-utskriftsfel"
  135.     Const L_ErrSource_Text    = "Felet intr├ñffade i <b>%1</b>"
  136.     Const L_ErrOccurProc_Text = "<p>Ett <b>fel</b> intr├ñffade n├ñr beg├ñran behandlades.</p>"
  137.  
  138.     strHTML = "<html><head><title>" & L_ErrTitle_Text & "</title>"
  139.     strHTML = strHTML & SetCodePage
  140.     strHTML = strHTML & "</head><body bgcolor=#FFFFFF>" & DEF_BASEFONT_TAG
  141.     strHTML = strHTML & L_ErrOccurProc_Text
  142.  
  143.     If strSource <> "" Then
  144.         strHTML = strHTML & RepString1(L_ErrSource_Text, strSource)
  145.     End If
  146.  
  147.     strHTML = strHTML & "<table>"
  148.  
  149.     strHTML = strHTML & "<tr><td>" & L_ErrCode_Text & "</td><td>" & (Hex (iCode)) & "</td></tr>"
  150.  
  151.     If strDscp <> "" Then
  152.         strHTML = strHTML & "<tr><td>" & L_ErrDscp_Text & "</td><td>" & strDscp & "</td></tr>"
  153.     End If
  154.  
  155.     If strNote <> "" Then
  156.         strHTML = strHTML & "<tr><td>" & L_ErrNote_Text & "</td><td>" & strNote & "</td></tr>"
  157.     End If
  158.  
  159.     strHTML = strHTML & "</table></body></html>"
  160.     GenErrorPage = strHTML
  161. End Function
  162.  
  163. Sub ErrorHandler(strNotes)
  164.     Dim strDscp, strSource
  165.  
  166.     Dim str401Error
  167.  
  168.     If Err.Number = 70 Or Err.Number = &H80070005 Then
  169.         Const L_ErrTitle_Text = "Autentiseringsfel f├╢r Internet-utskrift"
  170.         Const L_ErrTitle2_Text = "Autentiseringen misslyckades"
  171.         Const L_ErrLine1_Text = "Felet intr├ñffade eftersom den ├Ñtg├ñrd du f├╢rs├╢kte utf├╢ra kr├ñver h├╢gre privilegium ├ñn ditt konto har."
  172.         Const L_ErrLine2_Text = "Kontakta systemadministrat├╢ren och kontrollera att du har privilegium att utf├╢ra ├Ñtg├ñrden."
  173.  
  174.         str401Error = "<html><head><title>" & L_ErrTitle_Text & "</title>" &_
  175.             SetCodePage &_
  176.             "</head>" &_
  177.             "<body bgcolor=#FFFFFF>" &_
  178.             DEF_FONT_TAG &_
  179.             "<p><H2>" & L_ErrTitle2_Text & "</H2></p>" &_
  180.             "<p>" & L_ErrLine1_Text &_
  181.             "<br>" &_
  182.             "<br>" & L_ErrLine2_Text & "</p>" &_
  183.             "</font></body></html>"
  184.         response.write (Write(str401Error))
  185.         response.status = UNAUTHORIZED_401
  186.     Else
  187.         If Err.Number = &H80070709 Then
  188.             Const L_ErrInvalidName_Text = "Skrivaren kunde inte hittas p├Ñ servern. Det gick inte att ansluta."
  189.             Err.Description = L_ErrInvalidName_Text
  190.         End If
  191.  
  192.         response.write(Write(GenErrorPage (Err.Number, Err.Source, Err.Description, strCleanString(strNotes))))
  193.     End If
  194.     response.Expires = 0
  195.     response.end
  196.  
  197. End Sub
  198.  
  199. Function bDHTMLSupported()
  200.     On Error Resume Next
  201.     Err.Clear
  202.     Dim objBrowcap
  203.  
  204.     Set objBrowcap = server.CreateObject("MSWC.browsertype")
  205.     If Not Err And objBrowcap.browser = "IE" And objBrowcap.majorver >= "4" Then
  206.         bDHTMLSupported = True
  207.     Else
  208.         bDHTMLSupported = False
  209.     End If
  210. End Function
  211.  
  212. Sub CheckSession()
  213.     ' check to see if the session has timed out
  214.     If Session(COMPUTER) = "" Then
  215.         response.redirect ("ipp_0003.asp")
  216.         response.end
  217.     End If
  218. End Sub
  219.  
  220. Function strPrinterStatus(iStatus)
  221.     Dim L_PrinterStatus_Text(24)
  222.     Const L_Seperator_Text = " - "
  223.     Const L_PrinterReady_Text = "Redo"
  224.  
  225.     L_PrinterStatus_Text(0)  = "Pausad"
  226.     L_PrinterStatus_Text(1)  = "Fel"
  227.     L_PrinterStatus_Text(2)  = "Tar bort"
  228.     L_PrinterStatus_Text(3)  = "Papperet har fastnat"
  229.     L_PrinterStatus_Text(4)  = "Papperet ├ñr slut"
  230.     L_PrinterStatus_Text(5)  = "Manuell matning kr├ñvs"
  231.     L_PrinterStatus_Text(6)  = "Pappersproblem"
  232.     L_PrinterStatus_Text(7)  = "Skrivaren ├ñr offline"
  233.     L_PrinterStatus_Text(8)  = "I/O aktivt"
  234.     L_PrinterStatus_Text(9)  = "Upptagen"
  235.     L_PrinterStatus_Text(10) = "Skriver ut"
  236.     L_PrinterStatus_Text(11) = "Utmatningsfacket ├ñr fullt"
  237.     L_PrinterStatus_Text(12) = "Inte tillg├ñnglig"
  238.     L_PrinterStatus_Text(13) = "V├ñntar"
  239.     L_PrinterStatus_Text(14) = "Arbetar"
  240.     L_PrinterStatus_Text(15) = "Initierar"
  241.     L_PrinterStatus_Text(16) = "V├ñrmer upp"
  242.     L_PrinterStatus_Text(17) = "Lite toner kvar"
  243.     L_PrinterStatus_Text(18) = "Ingen toner kvar"
  244.     L_PrinterStatus_Text(19) = "Pappersproblem"
  245.     L_PrinterStatus_Text(20) = "├àtg├ñrder fr├Ñn anv├ñndaren kr├ñvs"
  246.     L_PrinterStatus_Text(21) = "Det finns inget ledigt minne"
  247.     L_PrinterStatus_Text(22) = "Luckan ├ñr ├╢ppen"
  248.     L_PrinterStatus_Text(23) = "Serverstatus ok├ñnd"
  249.     L_PrinterStatus_Text(24) = "Energisparl├ñge"
  250.  
  251.     Dim bit, i
  252.     bit = 1
  253.     i = 0
  254.     Dim strHTML, bFirst
  255.  
  256.     bFirst = True
  257.     strHTML = ""
  258.  
  259.     For i = 0 To 24
  260.     If iStatus And bit Then
  261.         If Not bFirst Then
  262.         strHTML = strHTML + L_Seperator_Text
  263.         End If
  264.         strHTML = strHTML + L_PrinterStatus_Text(i)
  265.             bFirst = False
  266.     End If
  267.         bit = bit * 2
  268.     Next
  269.     If bFirst Then
  270.         strHTML = "<font color=green>" & L_PrinterReady_Text & "</font>"
  271.     Else
  272.         strHTML = "<font color=red>" & strHTML & "</font>"
  273.     End If
  274.  
  275.     strPrinterStatus = strHTML
  276. End Function
  277.  
  278. Function strFormatJobSize(iJobSize)
  279.     Const  L_Bytes_Text     = "%1 byte"
  280.     Const  L_KiloBytes_Text = "%1 kB"
  281.     Const  L_MegaBytes_Text = "%1 MB"
  282.     
  283.  
  284.     If iJobSize < 1024 Then
  285.         strFormatJobSize = RepString1(L_Bytes_Text, CStr(iJobSize) )
  286.     ElseIf iJobSize < 1048576 Then
  287.         strFormatJobSize = RepString1(L_KiloBytes_Text, formatnumber(iJobSize / 1024, 1) )
  288.     Else
  289.         strFormatJobSize = RepString1(L_MegaBytes_Text, formatnumber(iJobSize / (1024 * 1024), 1) )
  290.     End If
  291. End Function
  292.  
  293. Function strFormatString(str)
  294.     If str = "" Then
  295.         strFormatString = " "
  296.     Else
  297.         strFormatString = str
  298.     End If
  299. End Function
  300.  
  301. Function strCleanString (str)
  302.  
  303.     Dim strClean, i, iLength, ch
  304.  
  305.     strClean = ""
  306.     iLength = Len (str)
  307.  
  308.     For i = 1 To iLength
  309.         ch = Mid (str, i, 1)
  310.  
  311.         Select Case ch
  312.         Case "<"
  313.             strClean = strClean & "<"
  314.         Case ">"
  315.             strClean = strClean & ">"
  316.         Case """"
  317.             strClean = strClean & """
  318.         Case "&"
  319.             strClean = strClean & "&"
  320.         Case Else
  321.             strClean = strClean & ch
  322.         End Select
  323.     Next
  324.     strCleanString = strClean
  325.  
  326. End Function
  327.  
  328. Function strCleanRequest (str)
  329.  
  330.     strCleanRequest = strCleanString (Request(str))
  331.  
  332. End Function
  333.  
  334. Function JobEtaInfo (objPrinter)
  335.     Dim strTime, iJobCount, iMinute
  336.     Dim strHTML
  337.  
  338.     Const L_NoJobPending_Text = "    <b>V├ñntetid:</b> 0 <br><b>V├ñntande dokument:</b> 0 "
  339.     Const L_ErrorNoJobCompletion_Text = "<font color=red>Utskriftsfel</font> "
  340.     Const L_LongHour_Text = "> 8 timmar"
  341.     Const L_About_Text = "ungef├ñr "
  342.     Const L_Hour_Text = " timmar"
  343.     Const L_Minute_Text = " minuter"
  344.  
  345.     Const L_QueueStatus_Text = "<b>Utskriftsk├╢:</b> "
  346.     Const L_WaitingTime_Text = "      <b>V├ñntetid:</b> "
  347.     Const L_Unknown_Text = "Ok├ñnd"
  348.     Const L_JobPending_Text = "<b>V├ñntande dokument:</b> "
  349.     Const L_AvgSize_Text = "      <b>Medelstorlek:</b> "
  350.     Const L_Pages_Text =  " sidor"
  351.  
  352.  
  353.     strHTML = L_QueueStatus_Text & strPrinterStatus (objPrinter.Status) & L_WaitingTime_Text
  354.  
  355.     objPrinter.CalcJobETA
  356.  
  357.     If ( objPrinter.Status And &H9F ) Then
  358.         strHTML = strHTML & L_Unknown_Text
  359.     'End If
  360.     'If 1 Then
  361.     Else
  362.         If objPrinter.PendingJobCount = 0 Then
  363.             strHTML = strHTML & "0"
  364.         Else
  365.             iMinute = objPrinter.JobCompletionMinute
  366.             'iMinute = 240  'For testing purpose
  367.             If iMinute <> -1 Then
  368.                 If iMinute > 480 Then
  369.                     strTime = L_LongHour_Text
  370.                 Elseif iMinute > 60 Then
  371.                     strTime = L_About_Text & CStr (Int (iMinute / 60)) & L_Hour_Text
  372.                 Else
  373.                     strTime = L_About_Text & CStr (iMinute) & L_Minute_Text
  374.                 End If
  375.                 strHTML = strHTML & strTime
  376.             Else
  377.                 strHTML = strHTML & L_Unknown_Text
  378.             End If
  379.         End If
  380.     End If
  381.  
  382.     strHTML = strHTML & "<br>"
  383.     iJobCount = objPrinter.PendingJobCount
  384.     strHTML = strHTML & L_JobPending_Text & CStr (iJobCount)
  385.  
  386.     If iJobCount > 0 Then
  387.         strHTML = strHTML & L_AvgSize_Text
  388.         If ObjPrinter.AvgJobSizeUnit = 1 Then 'Page
  389.             strHTML = strHTML & CStr (ObjPrinter.AvgJobSize) + L_Pages_Text
  390.         Else
  391.             strHTML = strHTML & strFormatJobSize(ObjPrinter.AvgJobSize)
  392.         End If
  393.     End If
  394.  
  395.     JobEtaInfo = "<font " & DEF_FONT & "size= -1>" & strHTML & "</font>"
  396.  
  397. End Function
  398.  
  399. Function GetFriendlyName (strPrtName, strComputer)
  400.  
  401.     Dim lOffset, strServerName
  402.  
  403.     If Left (strPrtName, 2) = "\\" Then
  404.         lOffset = InStr (3, strPrtName, "\")
  405.         strServerName = Mid (strPrtName, 3, lOffset - 3)
  406.         If strServerName = strComputer Then 'Cut the server name only if it is same as the computer name
  407.             strPrtName = Mid (strPrtName, lOffset + 1)
  408.         End If
  409.     End If
  410.     GetFriendlyName = strPrtName
  411.  
  412. End Function
  413.  
  414. %>
  415.